﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SimilarityScoring
{
    public class Observer
    {
        public static double[,] Gen = { { 0, 0, 0, 0 }, { 1, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 1, 0 } };
        public static double[,] Asc = { { 0, 0, 1, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 1, 0, 0 } };
        public static List<string> PatternDesc = new List<string>() { "Subject", "ConcreteSubject", "Observer", "ConcreteObserver" };
    }
    public class Decorator
    {
        public static double[,] Gen = { { 0, 0, 0, 0 }, { 1, 0, 0, 0 }, { 1, 0, 0, 0 }, { 0, 0, 1, 0 } };
        public static double[,] Asc = { { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 1, 0, 0, 0 }, { 1, 0, 0, 0 } };
        public static List<string> PatternDesc = new List<string>() { "Component", "ConcreteComponent", "Decorator", "ConcreteDecorator" };
    }
    public class t1
    {
        public static double[,] Gen = { { 0, 0 }, { 1, 0 } };
        public static double[,] Asc = { { 0, 0 }, { 1, 0 } };
    }
    public class t2
    {
        public static double[,] Gen = { { 0, 0, 0 }, { 1, 0, 0 }, { 0, 1, 0 } };
        public static double[,] Asc = { { 0, 0, 0 }, { 0, 0, 0 }, { 1, 0, 0 } };
    }
    public class Adapter
    {
        public static double[,] Gen = { { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 1, 0, 0 } };
        public static double[,] Asc = { { 0, 1, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 1, 0 } };
        public static List<string> PatternDesc = new List<string>() { "Client", "ITarget", "Adaptee", "Adapter" };
    }
    public class Bridge
    {
        public static double[,] Gen = { { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 1, 0, 0 } };
        public static double[,] Asc = { { 0, 1, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } };
        public static List<string> PatternDesc = new List<string>() { "Abstraction", "bridge", "ConcreteImplementatorA", "ConcreteImplementatorB" };
    }
    public class Kompozit
    {
        public static double[,] Gen = { { 0, 0, 0 }, { 1, 0, 0 }, { 1, 0, 0 } };
        public static double[,] Asc = { { 0, 0, 0 }, { 1, 0, 0 }, { 0, 0, 0 } };
        public static List<string> PatternDesc = new List<string>() { "Component", "Composite", "Leaf" };
    }
    public class AbstractFactory
    {
        public static double[,] Gen = { { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 0, 0 }, 
                                      { 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 } };

        public static double[,] Asc = { { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 
                                      { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 1, 1, 0, 0, 0, 0 } };
        public static List<string> PatternDesc = new List<string>() { "AbstractFactory", "ConcreteFactory1", "ConcreteFactory2", "AbstractProductA", "AbstractProductB", "ProductA1", "ProductB1", "ProductA2", "ProductB2" };
    }
    public class Factory
    {
        public static double[,] Gen = { { 0, 0, 0, 0 }, { 1, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 1, 0 }};
        public static double[,] Asc = { { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0  }, { 1, 0, 0, 0 } };
        public static List<string> PatternDesc = new List<string>() { "Product", "ConcreteProduct", "Creator", "ConcreteCreatorA" };
    }
}
